package org.iamd.domain.meta;

import java.util.List;

/**
 * Представлява абстракция за метаданни.
 * 
 * @author И. Атанасов
 */
public interface Metadata extends Cloneable {

	/**
	 * Setter за елементите на текущите метаданни.
	 * 
	 * @param children
	 *            списък с елементи
	 */
	public void setChildren(List<Selectable> children);

	/**
	 * Setter за описание.
	 * 
	 * @param displayName
	 *            описание
	 */
	public void setDisplayName(String displayName);

	/**
	 * Setter за линейност.
	 * 
	 * @param linear
	 *            флаг за линейност
	 */
	public void setLinear(boolean linear);

	/**
	 * Setter за системно име.
	 * 
	 * @param metaname
	 *            системно име
	 */
	public void setMetaname(String metaname);

	/**
	 * @return списък с елементи
	 */
	List<Selectable> getChildren();

	/**
	 * @return обобщено име на метаданни
	 */
	String getDisplayName();

	/**
	 * @return системно име на метаданни
	 */
	String getMetaname();

	/**
	 * @return <code>true</code> ако данните са линейни, <code>false</code> ако данните са
	 *         йерархични
	 */
	boolean isLinear();

}